// 按k数反转数组
// 给你一组字符串,再给你一个k数字
// 当数组小于k的大小,全部反转
// 如果长度大于等于k,且小于2k,则反转前k项的内容
// 如果大于2k,则反转每段2k里面的前k项

// 这道题目可以使用stl里面的reverse来解决,但是我们要注意反转的项数会根据字符串的长度和k的不同而有着不同的范围
// 反转只能位于字符串里面,可能有一个或者多个区域范围的反转
// 每次的反转从字符串的头开始,反转的长度在k以内
// 如果长度大于2k,则以2k为一段,每段的0到k段都为反转的区域
// 如果这么解析的话,问题就很容易理解了
// 就是说一段的0-k以内的范围都要反转,然后用2k为界划分每一段
// 既然这样的话,我们可以使用循环从0开始,每次加2k,这样子都是每段的0处
// 而反转的k怎么设置呢？我们需要看长度,如果范围长度小于k的话,就是字符串的尾部做反转的尾. 如果长度大于该段范围的话,就拿每段0的值加上k就是尾了

class Solution 
{

public:

    string reverseStr (string s, int k) 
    {

        int size = s.size () ;

        for (int i = 0 ; i < size ; i += k * 2)
        {

            reverse (s.begin () + i , min (size , i + k)) ;

        }

        return s ;
        
    }

} ;